Enterprise Resource Planning (ERP) and Customer Relationship Management (CRM) services are bundles of applications that address a wide range of needs in education, distribution, manufacturing, government, healthcare, professional services, and not-for-profit industries. Such services typically include a number of customizable applications executed on a plurality of servers and accessed via a range of networks by client devices and applications. Client applications may be “thin” clients that mostly rely on the service to provide functionality or “rich” clients that include some functionality to process data received from the service.
One of the challenges in building a rich client application is to enable quick manipulation of list data contained in a server view definition. Some approaches include storing a complete view's result set in local cache so that the results can be retrieved and manipulated locally without requiring time consuming server round trips and also avoiding unnecessary server load. The local cache may need to be maintained “relatively fresh” against the actual data on the server. A CRM server servicing the client may have certain limitations on the types of requests it can handle, however. The result set returned may be limited to a certain maximum number of rows, and there may not be a guarantee that the server data does not change between the subsequent requests returning their results. Furthermore, a query may contain conditions on the “primary” table's columns grouped by both “and” and “or” operations, but all conditions on the joined related tables' columns typically have to be grouped by “and”.